﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once
#include "IMepElement.h"
#include "IExternalObject.h"
namespace gmep
{
    class GMEP_MODEL_BASE_INTERFACE_EXPORT IMepGenericElement : public IMepElement, public gcmp::IExternalObject
        {
        DEFINE_CAST_DERIVED(gmep::IMepGenericElement, gcmp::IExternalObject);
    public:
        /// \brief 析构函数
        virtual ~IMepGenericElement() {}

    public:

        /// \brief 获得Element
        /// \return const gcmp::IElement *  返回Element指针（const）
        virtual const gcmp::IElement *GetElement() const override;

        /// \brief 获得Element
        /// \return const gcmp::IElement *  返回Element指针
        virtual gcmp::IElement* GetElement() override;

        /// \brief 获得类型ID
        /// \return gcmp::ElementId 返回类型ID
        virtual gcmp::ElementId GetTypeId() const;

        /// \brief 设置类型ID
        /// \param const gcmp::ElementId & typeId  类型ID
        /// \return bool 返回是否设置成功
        virtual bool SetTypeId(const gcmp::ElementId& typeId);
    };
}
